home *** CD-ROM | disk | FTP | other *** search
/ ASME's Mechanical Engine…ing Toolkit 1997 December / ASME's Mechanical Engineering Toolkit 1997 December.iso / c_lang / super_c.lzh / KLIB.ASM < prev    next >
Assembly Source File  |  1980-01-01  |  3KB  |  70 lines

  1. ;               Equipment Configuration Library
  2.  
  3. _TEXT   segment byte public 'CODE'      ; Place the code in the code segment
  4.         assume  CS:_TEXT                ; Assume the CS register points to it
  5.  
  6. ; _keyRd()
  7. ;
  8. ; Function: Return the next key pressed. The ASCII value (if any) is in the
  9. ; lower byte; the scan code is in the upper byte. If the key doesn't have
  10. ; an ASCII value, the lower byte is zero.
  11. ;
  12. ; Algorithm: Call ROM BIOS read key function of the keyboard interrupt.
  13.  
  14.         public  _keyRd          ; Routine is available to other modules
  15.  
  16. _keyRd  proc near               ; NEAR type subroutine
  17.         mov     ah,0            ; Function 0: read key
  18.         int     16H             ; Call the ROM BIOS with interrupt 16 (keybd)
  19.         ret                     ; Return to calling program
  20. _keyRd  endp                    ; End of subroutine
  21.  
  22. ; _keyChk(&keyPtr)
  23. ;
  24. ; Function: Return TRUE if there is a key press waiting, and if so, return
  25. ; the key in the location pointed to by keyPtr; if there is no key waiting,
  26. ; return FALSE. *keyPtr is set to the same value that would be returned
  27. ; from keyRd, but the key press is not actually read; keyRd must be called
  28. ; to remove it from the queue.
  29. ;
  30. ; Algorithm: Call ROM BIOS key check function of the keyboard interrupt.
  31.  
  32.         public  _keyChk         ; Routine is available to other modules
  33.  
  34.         keyPtr = 4              ; The offset to the keyPtr parameter
  35.  
  36. _keyChk proc near               ; NEAR type subroutine
  37.         push    bp              ; Save the BP register
  38.         mov     bp,sp           ; Set BP to SP, to get at the parameters
  39.         mov     ah,1            ; Function 1: check for key press
  40.         int     16H             ; Call the ROM BIOS with interrupt 16 (keybd)
  41.         mov     bx,[bp+keyPtr]  ; Save the key, if there is any
  42.         mov     [bx],ax
  43.         mov     ax,0            ; Assume not key (i.e., return FALSE)
  44.         jz      noKey           ; Branch if no key
  45.         mov     ax,1            ; Otherwise return TRUE
  46. noKey:  pop     bp              ; Restore the BP register
  47.         ret                     ; Return to calling program
  48. _keyChk endp                    ; End of subroutine
  49.  
  50. ; _keyShf()
  51. ;
  52. ; Function: Return the current state of the shift keys and toggled modes.
  53. ; See the main text of the chapter for details on the format of the word
  54. ; returned.
  55. ;
  56. ; Algorithm: Call ROM BIOS get keyboard state function of the keyboard 
  57. ; interrupt.
  58.  
  59.         public  _keyShf         ; Routine is available to other modules
  60.  
  61. _keyShf proc near               ; NEAR type subroutine
  62.         mov     ah,2            ; Function 2: get keyboard state
  63.         int     16H             ; Call the ROM BIOS with interrupt 16 (keybd)
  64.         ret                     ; Return to calling program
  65. _keyShf endp                    ; End of subroutine
  66.  
  67. _TEXT   ends                    ; End of code segment
  68.         end                     ; End of assembly code
  69.  
  70.